package at.fhj.itm10.ticketmaster.dao;

/**
 * Interface for CustomerDAO
 * 
 * @author Marvin Puchmueller
 */

import java.util.List;

import at.fhj.itm10.ticketmaster.entities.Customer;

public interface CustomDAOInterface {

	/**
	 * Insert Customer
	 * 
	 * @param entity
	 * @throws DAOException
	 */
	public abstract void insert(Customer entity) throws DAOException;

	/**
	 * Update Customer
	 * 
	 * @param entity
	 * @throws DAOException
	 */
	public abstract void update(Customer entity) throws DAOException;

	/**
	 * Delete Customer
	 * 
	 * @param entity
	 * @throws DAOException
	 */
	public abstract void delete(Customer entity) throws DAOException;

	/**
	 * Find one by id.
	 * 
	 * @param id
	 * @return Customer
	 * @throws DAOException
	 */
	public abstract Customer findById(long id) throws DAOException;

	/**
	 * Find all by email.
	 * 
	 * @param email
	 * @return List<Customer>
	 * @throws DAOException
	 */
	public abstract List<Customer> findByEMail(String email)
			throws DAOException;

	/**
	 * Find all by username
	 * 
	 * @param username
	 * @return List<Customer>
	 * @throws DAOException
	 */
	public abstract List<Customer> findByUsername(String username)
			throws DAOException;

	/**
	 * Find all.
	 * 
	 * @return List<Customer>
	 * @throws DAOException
	 */
	public abstract List<Customer> findAll() throws DAOException;

}